
/*
 * Copyright (C) 2008-2009 Archie L. Cobbs. All rights reserved.
 *
 * $Id: FieldSwitch.java 377 2010-03-11 20:50:18Z archie.cobbs $
 */

package org.dellroad.sidekar;

/**
 * Visitor pattern interface for concrete {@link Field} subclasses.
 */
public interface FieldSwitch {

    <E> void caseReferenceField(ReferenceField<E> field);
    <E> void caseSetField(SetField<E> field);
    <K, V> void caseMapField(MapField<K, V> field);
    <E> void caseListField(ListField<E> field);
    void caseStringField(StringField field);
    <E> void caseArrayField(ArrayField<E> field);
    void caseBooleanField(BooleanField field);
    void caseByteField(ByteField field);
    void caseCharacterField(CharacterField field);
    void caseShortField(ShortField field);
    void caseIntegerField(IntegerField field);
    void caseFloatField(FloatField field);
    void caseDoubleField(DoubleField field);
    void caseLongField(LongField field);
    void caseDateField(DateField field);
    void caseBigIntegerField(BigIntegerField field);
    void caseAttachedField(AttachedField field);
    void caseEntityField(EntityField field);
    void caseIdField(IdField field);
}

